package ds.hashmap;

/**
 * 单链表集合
 * @author 10843
 */
public class ListNode {
    /**
     * 头节点
     */
    Node head;
    /**
     * 尾节点
     */
    Node fail;

    /**
     * 添加节点
     * @param key
     * @param value
     */
    public void  addNode(String key,String value){
         if(head==null) return;
         // 创建一个头节点
        Node node = new Node(key,value,null);

        if(fail==null){
            // 1.相同的key,覆盖value
            if(head.Key.equals(key)){
                head.value = value;
            }
            // 2.不相同的key
            else{

                head.next = node;
                // 让尾节点不等于空，记录添加后节点的位置
                fail = node;
            }
        }
        // 有尾节点
        else{
            if(key.equals(fail.Key)){
                fail.value = value;
            }else{
                fail.next = node;
                // 尾节点指向新加入的节点
                fail = node;
            }
        }
    }

    /**
     * 返回value
     * @param key
     * @return
     */
    public String getVal(String key){
        if(head==null) return null;

        // 只有一个头
        if(head.next==null){
            return head.value;
        }
        else{
            // 定义一个临时变量来存储值
            Node tmp = head;
            while(tmp!=null){
                // 匹配key
                if(key.equals(tmp.Key)){
                    return tmp.value;
                }
                // 指针下移
                tmp = tmp.next;
            }

        }


        return null;
    }
}
